#ifndef __VTOR_PRINTF_H__
#define __VTOR_PRINTF_H__

#ifdef __cplusplus
extern "C" {
#endif

#include "vtor_elec_module_config.h"

#ifdef __VTOR_PRINTF__

#include "vtor_string.h"

// 自写printf函数，支持%d %x %f %s
#define __VTOR_STRING_CONFIG_PRINTF_BY_VTOR_STRING__

#ifdef __VTOR_STRING_CONFIG_PRINTF_BY_VTOR_STRING__

// 最底层调用，放置在此处，便于跳转查看
// int16_t VtorString_ChanPrintBuffer(uint8_t ch, uint8_t* buf, int16_t len);

#define VtorPrintf(...)			VtorSprintf(NULL, __VA_ARGS__)
// 可以自定义宏，然后自行修改不同ch的打印实现
#define VtorChanPrintf(ch, ...)	VtorSprintf((uint8_t*)ch, __VA_ARGS__)

#define VtorChan0Printf(...)	VtorSprintf((uint8_t*)0, __VA_ARGS__)
#define VtorChan1Printf(...)	VtorSprintf((uint8_t*)1, __VA_ARGS__)
#define VtorChan2Printf(...)	VtorSprintf((uint8_t*)2, __VA_ARGS__)
#define VtorChan3Printf(...)	VtorSprintf((uint8_t*)3, __VA_ARGS__)
#define VtorChan4Printf(...)	VtorSprintf((uint8_t*)4, __VA_ARGS__)

// 为elec module启用一个调试接口
#define VtorDebugChanPrintf(...)	VtorSprintf((uint8_t*)5, __VA_ARGS__)
#endif


// 如果没有设置，就使用默认参数
#ifndef __VTOR_SPRINTF_CONFIG_BUFFER_SIZE__
#define __VTOR_SPRINTF_CONFIG_BUFFER_SIZE__
#define  VTOR_SPRINTF_BUFFER_SIZE 256
#endif

// 高级功能，支持格式化输出，目前支持整形，浮点型，字符串
int16_t VtorSprintf(uint8_t* str, uint8_t* format, ...);

#endif // __VTOR_PRINTF__

#ifdef __cplusplus
}
#endif

#endif
